"""
题目：给定一个无向图，计算指定顶点的度数（与该顶点相连的边的数量），若顶点不存在则返回 - 1。
"""

class Graph:
    def __init__(self, is_directed=False):
        self.vertices = {}  # 顶点: 邻接顶点列表
        self.is_directed = is_directed  # 本题固定为无向图，保留参数便于复用

    def add_vertex(self, vertex):
        if vertex not in self.vertices:
            self.vertices[vertex] = []

    def add_edge(self, v1, v2):
        self.add_vertex(v1)
        self.add_vertex(v2)
        self.vertices[v1].append(v2)
        if not self.is_directed:
            self.vertices[v2].append(v1)

    def get_vertex_degree(self, vertex):
        """计算无向图中指定顶点的度数"""
        # 顶点不存在，返回-1
        if vertex not in self.vertices:
            return -1
        # 无向图中，顶点的度数 = 邻接顶点列表长度
        return len(self.vertices[vertex])

# 测试
if __name__ == "__main__":
    # 创建无向图
    undir_graph = Graph(is_directed=False)
    undir_graph.add_edge(0, 1)
    undir_graph.add_edge(0, 2)
    undir_graph.add_edge(1, 2)
    undir_graph.add_edge(1, 3)
    undir_graph.add_edge(2, 3)

    # 测试顶点度数
    print(undir_graph.get_vertex_degree(0))  # 输出: 2（连接1、2）
    print(undir_graph.get_vertex_degree(1))  # 输出: 3（连接0、2、3）
    print(undir_graph.get_vertex_degree(5))  # 输出: -1（顶点5不存在）